package threadTest;

import java.util.*;
class BackCounter implements Runnable{
    private int count=100;  //线程共享变量，对它的处理必须用同步机制进行保护
    public int getCount() { return count; }//返回变量值
    //线程体
    public void  run() {
        for(int i=10;i>0;i--) { //变量值递减 10
            synchronized (this)
            { //以下代码在处理共享变量，需要同步机制保护
                if( count<=0 ) break;
                count--;
            }
            try { Thread.sleep(10); } catch ( InterruptedException e ) { }//模拟延时 10 毫秒
        }
    }//线程体结束
}
public class Main {
    public static void main(String[] args) throws InterruptedException {//某些线程方法会抛出检查型异常
        ArrayList<Thread> lt=new ArrayList<Thread>();
        BackCounter bc=new BackCounter();//创建实现类对象
        lt.add(new Thread(bc));//创建线程对象
        lt.add(new Thread(bc));
        for (Thread th:lt)
            th.start(); //启动线程
        for (Thread th:lt)
            th.join();  //等待线程结束
        System.out.println(bc.getCount());
    }
}